package Controller;

import java.util.ArrayList;
import java.util.List;

import Beans.PagoBean;
import DAO.HibernatePagoDAO;
import DTO.PagoDTO;
import Model.Pago;

public class AdministradorPago {
private static AdministradorPago instancia;
	
	public AdministradorPago(){
		
	}
	public static AdministradorPago getInstancia() {
		if(instancia==null)
			instancia=new AdministradorPago();
		return instancia;
	}
	public List<PagoBean> fromModelTOBean(List<Pago> pagos) {
		List<PagoBean> pagosBean=new ArrayList<PagoBean>();
		for (Pago pago : pagos) {
			PagoBean pagob=fromModelTOBean(pago);
			pagosBean.add(pagob);
		}
		return pagosBean;
	}
	public PagoBean fromModelTOBean(Pago pago) {
		PagoBean pagob=null;
		if(pago!=null){
			pagob=new PagoBean();
			pagob.setEfectivo(AdministradorItemBillete.getInstancia().fromModelTOBean(pago.getEfectivo()));
			pagob.setFactura(AdministradorFactura.getInstancia().fromModelTOBean(pago.getFactura()));
			pagob.setIdPago(pago.getId());
			pagob.setTicket(AdministradorTicket.getInstancia().fromModelTOBean(pago.getTicket()));
			pagob.setTipoPago(pago.getTipoPago());
		}
		return pagob;
	}
	public List<Pago> fromBeanTOModel(List<PagoBean> pagosBean) {
		List<Pago> pagos=new ArrayList<Pago>();
		for (PagoBean pagoBean : pagosBean) {
			Pago pago=fromBeanTOModel(pagoBean);
			pagos.add(pago);
		}
		return pagos;
	}
	public Pago fromBeanTOModel(PagoBean pagoBean) {
		Pago pago=null;
		if(pagoBean!=null){
			pago=new Pago();
			pago.setEfectivo(AdministradorItemBillete.getInstancia().fromBeanTOModel(pagoBean.getEfectivo()));
			pago.setFactura(AdministradorFactura.getInstancia().fromBeanTOModel(pagoBean.getFactura()));
			pago.setId(pagoBean.getIdPago());
			pago.setTicket(AdministradorTicket.getInstancia().fromBeanTOModel(pagoBean.getTicket()));
			pago.setTipoPago(pagoBean.getTipoPago());
		}
		return pago;
	}
	
	public List<Pago> fromDTOTOModel(List<PagoDTO> pagosDTO) {
		List<Pago> pagos=new ArrayList<Pago>();
		for (PagoDTO pagoDTO : pagosDTO) {
			Pago pago=fromDTOTOModel(pagoDTO);
			pagos.add(pago);
		}
		return pagos;
	}
	public Pago fromDTOTOModel(PagoDTO pagoDTO) {
		Pago pago=null;
		if(pagoDTO!=null){
			pago=new Pago();
			pago.setEfectivo(AdministradorItemBillete.getInstancia().fromDTOTOModel(pagoDTO.getEfectivo()));
			pago.setFactura(AdministradorFactura.getInstancia().fromDTOTOModel(pagoDTO.getFactura()));
			pago.setId(pagoDTO.getId());
			pago.setTicket(AdministradorTicket.getInstancia().fromDTOTOModel(pagoDTO.getTicket()));
			pago.setTipoPago(pagoDTO.getTipoPago());
		}
		return pago;
	}
	
	public List<PagoDTO> fromModelTODTO(List<Pago> pagos) {
		List<PagoDTO> pagosDTO=new ArrayList<PagoDTO>();
		for (Pago pago : pagos) {
			PagoDTO pagoDTO=fromModelTODTO(pago);
			pagosDTO.add(pagoDTO);
		}
		return pagosDTO;
	}
	public PagoDTO fromModelTODTO(Pago pago) {
		PagoDTO pagoDTO=null;
		if(pago!=null){
			pagoDTO=new PagoDTO();
			pagoDTO.setEfectivo(AdministradorItemBillete.getInstancia().fromModelTODTO(pago.getEfectivo()));
			pagoDTO.setFactura(AdministradorFactura.getInstancia().fromModelTODTO(pago.getFactura()));
			pagoDTO.setId(pago.getId());
			pagoDTO.setTicket(AdministradorTicket.getInstancia().fromModelTODTO(pago.getTicket()));
			pagoDTO.setTipoPago(pago.getTipoPago());
		}
		return pagoDTO;
	}
	public Pago buscarPago(Pago pago) {
		PagoBean ab=fromModelTOBean(pago);
		ab=HibernatePagoDAO.getInstancia().buscarPago(ab);
		return fromBeanTOModel(ab);
	}
}
